let fs = require('fs');

// promise中的回调函数有两个指定的参数resolve和reject
// 分别指定成功的回调函数和失败的回调函数
let p1 = new Promise(function (resolve, reject) {
  // 这是一个异步任务
  fs.readFile('./files/b.txt', 'utf8', function (err, data) {
    if (err) {
      // 失败了，承诺容器中的任务失败了
      // 把容器的Pending状态改变为Rejected
      // 调用reject方法就相当于调用的了then方法的第二个参数
      reject(err); // 失败的调用
    }
    // 承诺容器中的任务成功了
    // 把容器的Pending状态改为成功Resolved
    // 也就是说这里调用的resolve方法实际上就是then方法传递的那个function
    resolve(data);  // 成功的调用
  })
});

// p1是Promise的一个实例
// p1完成承诺的事后，然后(then)做指定的事，
// then方法接收的function就是reject和resolve
p1.then(
  function (data) {
    console.log(data);
  },function (err) {
    console.log(err);
  }
);
